﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MedicalAssistant.core
{
    [Serializable]
    public class Questionario
    {

        public enum Escolha1
        {
            SIM,
            NAO
        } ;

        public enum Escolha2
        {
            SIM,
            NAO,
            NAOSABE
        } ;


        public enum Escolha3
        {
            SIM,
            NAO,
            SEMDADOS
        } ;

        public enum Escolha4
        {
            SIM,
            NAO,
            NAOUSOU,
            SEMDADOS
        } ;

        public enum Escolha5
        {
            PAI,
            MAE,
            IRMAO,
            TIO,
            AVO,
            OUTRO,
            NAOSABE
        } ;

        public enum Escolha6
        {
            MENOS2ANOS,
            MAIS2ANOS, 
            NAOSABE
        }

        public static int QuadroClinico(Escolha2 tosse, Escolha2 febre, Escolha2 adinamia, Escolha2 expectoracao,
            Escolha2 emagrecimento, Escolha2 sudorese, uint duracaoSintomas, Escolha3 infeccaoRespiratoria, Escolha4 melhorouComAntibioticos, Escolha1 assintomatico)
        {
            if (infeccaoRespiratoria == Escolha3.SIM & (melhorouComAntibioticos == Escolha4.SIM | melhorouComAntibioticos == Escolha4.NAOUSOU))
           {
               return -10;
           }

            if (assintomatico == Escolha1.SIM)
            {
                return 0;
            }

            if (tosse == Escolha2.SIM | febre == Escolha2.SIM | adinamia == Escolha2.SIM | expectoracao == Escolha2.SIM | emagrecimento == Escolha2.SIM | sudorese == Escolha2.SIM)
            {
                if (duracaoSintomas > 14)
                {
                    return 15;
                }else
                {
                    return 0;
                }
            }

            return 0;
        }

        //TODO Procurar explicacao para as perguntas repetidas
        public static int QuadroRadiologico(Escolha1 rxNormal)
        {
            if(rxNormal == Escolha1.SIM)
            {
                return -5;
            }

            return 0;

        }


        public static int ContatoComAdultoTuberculoso(Escolha2 contatoComAdultoTB, Escolha5 qualAdultoTB, Escolha2 proximoNosUltimos2Anos, Escolha2 ocasionalOuNegativo)
        {
            if(ocasionalOuNegativo == Escolha2.SIM)
            {
                return 0;
            }    

            if(contatoComAdultoTB == Escolha2.SIM & proximoNosUltimos2Anos == Escolha2.SIM)
            {
                return 10;
            }

            return 0;
        }

        public static int Vacinacao(Escolha2 vacinacaoBCG, Escolha6 tempoBCG, uint testeTuberculinicoEmMM)
        {
            if(vacinacaoBCG == Escolha2.NAO)
            {
                if(testeTuberculinicoEmMM < 5)
                {
                    return 0;
                }else if (testeTuberculinicoEmMM >= 5 & testeTuberculinicoEmMM < 10)
                {
                    return 5;
                }
                else
                {
                    return 15;
                }
            }
            
            if(vacinacaoBCG == Escolha2.SIM & tempoBCG == Escolha6.MAIS2ANOS)
            {
                if (testeTuberculinicoEmMM < 5)
                {
                    return 0;
                }
                else if (testeTuberculinicoEmMM >= 5 & testeTuberculinicoEmMM < 10)
                {
                    return 5;
                }
                else if (testeTuberculinicoEmMM >= 10 & testeTuberculinicoEmMM < 15)
                {
                    return 10;
                }
                else
                {
                    return 15;
                }
            }

            if (vacinacaoBCG == Escolha2.SIM & tempoBCG == Escolha6.MENOS2ANOS)
            {
                if (testeTuberculinicoEmMM < 10)
                {
                    return 0;
                }
                else if (testeTuberculinicoEmMM >= 10 & testeTuberculinicoEmMM < 15)
                {
                    return 5;
                }
                else
                {
                    return 15;
                }
            }

            return 0;

        }

        public static int EstadoNutricional(Escolha1 desnutricaoGraveOuAbaixoP10)
        {
            if(desnutricaoGraveOuAbaixoP10 == Escolha1.SIM)
            {
                return 5;
            }
            else
            {
                return 0;
            }
        }

    }
}
